package services.impl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateful;

import services.ExchangeFormatService;
import services.ListaPreciosService;
import services.RodamientoService;

import com.uade.ws.client.AdministradorListas;
import com.uade.ws.client.AdministradorListas_Service;

import entities.ItemListaPrecios;
import entities.ListaPrecios;
import entities.Rodamiento;
import entities.RodamientoStock;
@Stateful
public class ListaPreciosBean implements ListaPreciosService{

	@EJB
	private ExchangeFormatService exchangeFormatService;
	private List<ListaPrecios> listasPrecios = null;
	@EJB
	private RodamientoService rodamientoService;
	
	
	@Override
	public List<ListaPrecios> getListasPrecios() {	
		if (listasPrecios == null){
			AdministradorListas_Service admiListasService = new AdministradorListas_Service();
			AdministradorListas admiListas = admiListasService.getAdministradorListasPort();
			String listasPreciosXML = admiListas.obtenerListaPrecios();
			listasPrecios = exchangeFormatService.getListasDePrecios(listasPreciosXML);
			for(ListaPrecios listaPrecio : listasPrecios){
				List<ItemListaPrecios> itemsListaPrecio = listaPrecio.getItems();
				for(ItemListaPrecios itemListaPrecio : itemsListaPrecio){
					RodamientoStock rodamiento = new RodamientoStock(itemListaPrecio.getRodamiento());
					rodamiento.setStock(itemListaPrecio.getCantidad());
					if(!rodamientoService.existeRodamiento(rodamiento)){
						rodamientoService.persist(rodamiento);
					}
				}
			}
		}
		return listasPrecios;
	}
	
	public ItemListaPrecios obtenerItemMejorPrecio(Rodamiento rodamiento){
		List<ListaPrecios> listasPrecios = this.getListasPrecios();
		ItemListaPrecios itemMejorPrecio = null;
		for (ListaPrecios listaPrecios : listasPrecios) {
			for (ItemListaPrecios itemListaPrecio : listaPrecios.getItems()) {
				if (rodamiento.equals(itemListaPrecio.getRodamiento())){
					if (itemMejorPrecio==null || itemMejorPrecio.getPrecio()>itemListaPrecio.getPrecio()){
						itemMejorPrecio = itemListaPrecio;
					}					
				}
			}
		}
		return itemMejorPrecio;
	}

}
